package com.copa.l160;

import java.util.HashSet;
import java.util.Set;

/**
 * @author copa
 * @createDate 2022-08-04 10:07
 * @function set方法（虽然此题要求不符）
 */
public class Test1 {

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        Set<ListNode> set = new HashSet<>();
        while (headA != null && headB != null) {
            if (set.contains(headA)) {
                return headA;
            }
            set.add(headA);
            headA = headA.next;
            if (set.contains(headB)) {
                return headB;
            }
            set.add(headB);
            headB = headB.next;
        }
        while (headA != null) {
            if (set.contains(headA)) {
                return headA;
            }
            set.add(headA);
            headA = headA.next;
        }
        while (headB != null) {
            if (set.contains(headB)) {
                return headB;
            }
            set.add(headB);
            headB = headB.next;
        }
        return null;
    }

    public static void main(String[] args) {
//        ListNode headA = new ListNode(4);
//        ListNode headB = new ListNode(5);
//        headA.next = new ListNode(1);
//        headB.next = new ListNode(6);
//        headA.next.next = new ListNode(8);
//        headB.next.next = new ListNode(1);
//        headA.next.next.next = new ListNode(4);
//        headB.next.next.next = headA.next.next.next;
//        headA.next.next.next.next = new ListNode(5);

        ListNode headA = new ListNode(1);
        ListNode headB = new ListNode(2);

        System.out.println(new Test1().getIntersectionNode(headA, headB).val);
    }
}
